/*/{Protheus.doc} SYNCPES
E a User Function de geracao do layout PES (Pessoas) do Sistema Synchro
@author Elton Teodoro Alves
@since 14/11/2014
@version P11 R5
@Param aParam,Array,Array enviado pelo schudele
@Example
Esta User Function foi desenvolvida para ser utilizada com o Schudele, que passa como parametro para User Function um array com a seguinte configuracao:</br>
</br>
<table>
<tr><th> POSICAO </th><th> TIPO </th><th> DESCRICAO             </th></tr>
<tr><td> [01]    </td><td> C    </td><td> Codigo da Empresa     </td></tr>
<tr><td> [02]    </td><td> C    </td><td> Codigo da Filial      </td></tr>
<tr><td> [03]    </td><td> C    </td><td> Codigo do Agendamento </td></tr>
<tr><td> [04]    </td><td> C    </td><td> Codigo da Tarefa      </td></tr>
</table>
</br>
Para teste fora do schudele, pode-se enviar para o SmartClient com a clausula -a estes dados separadas por virgula ',' Ex.: 99,01,0001,0001
/*/

#Define CRLF Chr(13) + Chr(10)
Static PERIOD := 'D'

#Include 'Protheus.ch'

User Function SYNCPES(xParam)
	
	Local	cLayout		:=	Right(ProcName(),3)
	Local	aParam		:=	If(Valtype(xParam) == 'C',Separa(xParam,',',.T.),xParam)
	Local	aSyncEnv	:=	U_SYNCENV(aParam,cLayout,PERIOD)
	Local	cTrab		:=	GetNextAlias()
	Local	cTempTrab	:=	cLayout + Dtos(Date()) + StrTran(Time(),':','')
	Local	cTempFile	:=	GetSrvProfString("StartPath","") + cTempTrab + GetDbExtension()
	Local	cQuerySA1	:=	''
	Local	cQuerySA2	:=	''
	Local	cQuerySA4	:=	''
	Local	cQuery		:=	''
	Local	cQueryBkp	:=	''
	Local	aStru		:=	{}
	Local	nX			:=	0
	Local	aFiliais	:=	StrTokArr(AllTrim(aSyncEnv[10]),'/',)
	Local	cFiliais	:=	''
	Local	nCount		:=	0
	Local	aUf			:=	{}
	
	// Monta a string com a lista de filiais para ser utilizada na query
	
	For nX := 1 To Len(aFiliais)
		
		cFiliais += "'" + aFiliais[nX] + "'"
		
		If nX # Len(aFiliais)
			
			cFiliais += ","
			
		End If
		
	Next nX
	
	// Monta Array com codgios da UFs
	
	aadd(aUF,{"RO","11"})
	aadd(aUF,{"AC","12"})
	aadd(aUF,{"AM","13"})
	aadd(aUF,{"RR","14"})
	aadd(aUF,{"PA","15"})
	aadd(aUF,{"AP","16"})
	aadd(aUF,{"TO","17"})
	aadd(aUF,{"MA","21"})
	aadd(aUF,{"PI","22"})
	aadd(aUF,{"CE","23"})
	aadd(aUF,{"RN","24"})
	aadd(aUF,{"PB","25"})
	aadd(aUF,{"PE","26"})
	aadd(aUF,{"AL","27"})
	aadd(aUF,{"MG","31"})
	aadd(aUF,{"ES","32"})
	aadd(aUF,{"RJ","33"})
	aadd(aUF,{"SP","35"})
	aadd(aUF,{"PR","41"})
	aadd(aUF,{"SC","42"})
	aadd(aUF,{"RS","43"})
	aadd(aUF,{"MS","50"})
	aadd(aUF,{"MT","51"})
	aadd(aUF,{"GO","52"})
	aadd(aUF,{"DF","53"})
	aadd(aUF,{"SE","28"})
	aadd(aUF,{"BA","29"})
	aadd(aUF,{"EX","  "})
	aadd(aUF,{"  ","  "})
	
	// --------------------------------------------------------------
	// Monta estrutura do arquivo temporario com dados a serem exportados
	// --------------------------------------------------------------
	aAdd(aStru,{'POS0001','C',0008,0}) // ALTERADO_EM
	aAdd(aStru,{'POS0009','C',0003,0}) // ALTERADO_POR
	aAdd(aStru,{'POS0012','C',0035,0}) // BAIRRO
	aAdd(aStru,{'POS0047','C',0015,0}) // CCM
	aAdd(aStru,{'POS0062','C',0010,0}) // CEP
	aAdd(aStru,{'POS0072','C',0015,0}) // CPF_CGC
	aAdd(aStru,{'POS0087','C',0001,0}) // CTRL_INSTRUCAO
	aAdd(aStru,{'POS0088','C',0008,0}) // DT_INICIO
	aAdd(aStru,{'POS0096','C',0050,0}) // E_MAIL
	aAdd(aStru,{'POS0146','C',0015,0}) // FAX
	aAdd(aStru,{'POS0161','C',0001,0}) // IND_CLIENTE
	aAdd(aStru,{'POS0162','C',0001,0}) // IND_FISICA_JURIDICA
	aAdd(aStru,{'POS0163','C',0001,0}) // IND_FORNECEDOR
	aAdd(aStru,{'POS0164','C',0001,0}) // IND_NACIONAL_ESTRANGEIRA
	aAdd(aStru,{'POS0165','C',0001,0}) // IND_TRANSPORTADOR
	aAdd(aStru,{'POS0166','C',0020,0}) // INSCR_ESTADUAL
	aAdd(aStru,{'POS0186','C',0002,0}) // LOC_CODIGO
	aAdd(aStru,{'POS0188','C',0100,0}) // LOGRADOURO
	aAdd(aStru,{'POS0288','C',0065,0}) // RAZAO SOCIAL
	aAdd(aStru,{'POS0353','C',0005,0}) // MUN_CODIGO
	aAdd(aStru,{'POS0358','C',0002,0}) // PAIS
	aAdd(aStru,{'POS0360','C',0015,0}) // TELEFONE1
	aAdd(aStru,{'POS0375','C',0002,0}) // TICO_CODIGO
	aAdd(aStru,{'POS0377','C',0007,0}) // CODIGO_IBGE
	aAdd(aStru,{'POS0384','C',0030,0}) // INSCR_SUFRAMA
	aAdd(aStru,{'POS0414','C',0002,0}) // NUM_DEPENDENTES_IR
	aAdd(aStru,{'POS0416','C',0017,0}) // VL_PENSAO
	aAdd(aStru,{'POS0433','C',0017,0}) // VL_INSS_DEDUCAO
	aAdd(aStru,{'POS0450','C',0012,0}) // INSS_CEI
	aAdd(aStru,{'POS0462','C',0005,0}) // NUMERO
	aAdd(aStru,{'POS0467','C',0005,0}) // Codigo do PAIS
	
	// --------------------------------------------------------------
	
	If aSyncEnv[6]
		
		// --------------------------------------------------------------
		// Montagem da query de pesquisa
		// --------------------------------------------------------------
		
		cQuerySA1	+=	"SELECT " + CRLF
		cQuerySA2	+=	"SELECT " + CRLF
		cQuerySA4	+=	"SELECT " + CRLF
		
		cQuerySA1	+=	"'SA1' ORIGEM," + CRLF
		cQuerySA2	+=	"'SA2' ORIGEM," + CRLF
		cQuerySA4	+=	"'SA4' ORIGEM," + CRLF
		
		//-------------------------------------------
		
		cQuerySA1	+=	"SA1.A1_DDD DDD," + CRLF
		cQuerySA2	+=	"SA2.A2_DDD DDD," + CRLF
		cQuerySA4	+=	"SA4.A4_DDD DDD," + CRLF
		
		cQuerySA1	+=	"SA1.A1_EST UF," + CRLF
		cQuerySA2	+=	"SA2.A2_EST UF," + CRLF
		cQuerySA4	+=	"SA4.A4_EST UF," + CRLF
		
		cQuerySA1	+=	"SA1.A1_XDTINAL POS0001," + CRLF
		cQuerySA2	+=	"SA2.A2_XDTINAL POS0001," + CRLF
		cQuerySA4	+=	"SA4.A4_XDTINAL POS0001," + CRLF
		
		cQuerySA1	+=	"'' POS0009," + CRLF
		cQuerySA2	+=	"'' POS0009," + CRLF
		cQuerySA4	+=	"'' POS0009," + CRLF
		
		cQuerySA1	+=	"SA1.A1_BAIRRO POS0012," + CRLF
		cQuerySA2	+=	"SA2.A2_BAIRRO POS0012," + CRLF
		cQuerySA4	+=	"SA4.A4_BAIRRO POS0012," + CRLF
		
		cQuerySA1	+=	"SA1.A1_INSCRM POS0047," + CRLF
		cQuerySA2	+=	"SA2.A2_INSCRM POS0047," + CRLF
		cQuerySA4	+=	"'' POS0047," + CRLF
		
		cQuerySA1	+=	"SA1.A1_CEP POS0062," + CRLF
		cQuerySA2	+=	"SA2.A2_CEP POS0062," + CRLF
		cQuerySA4	+=	"SA4.A4_CEP POS0062," + CRLF
		
		
		//------ CGC / Envia Codigo de Cadastro casa seja estrangeiro
		
		cQuerySA1	+=	"CASE SA1.A1_EST" + CRLF
		cQuerySA1	+=	"WHEN 'EX' THEN SA1.A1_COD" + CRLF
		cQuerySA1	+=	"ELSE SA1.A1_CGC" + CRLF
		cQuerySA1	+=	"END POS0072," + CRLF
		
		cQuerySA2	+=	"CASE SA2.A2_EST" + CRLF
		cQuerySA2	+=	"WHEN 'EX' THEN SA2.A2_COD" + CRLF
		cQuerySA2	+=	"ELSE SA2.A2_CGC" + CRLF
		cQuerySA2	+=	"END POS0072," + CRLF
		
		cQuerySA4	+=	"CASE SA4.A4_EST" + CRLF
		cQuerySA4	+=	"WHEN 'EX' THEN SA4.A4_COD" + CRLF
		cQuerySA4	+=	"ELSE SA4.A4_CGC" + CRLF
		cQuerySA4	+=	"END POS0072," + CRLF
		
		//------------------------------------------------------------
		
		cQuerySA1	+=	"'M' POS0087," + CRLF
		cQuerySA2	+=	"'M' POS0087," + CRLF
		cQuerySA4	+=	"'M' POS0087," + CRLF
		
		cQuerySA1	+=	"SA1.A1_XDTINAL POS0088," + CRLF
		cQuerySA2	+=	"SA2.A2_XDTINAL POS0088," + CRLF
		cQuerySA4	+=	"SA4.A4_XDTINAL POS0088," + CRLF
		
		cQuerySA1	+=	"SA1.A1_EMAIL POS0096," + CRLF
		cQuerySA2	+=	"SA2.A2_EMAIL POS0096," + CRLF
		cQuerySA4	+=	"SA4.A4_EMAIL POS0096," + CRLF
		
		cQuerySA1	+=	"SA1.A1_FAX POS0146," + CRLF
		cQuerySA2	+=	"SA2.A2_FAX POS0146," + CRLF
		cQuerySA4	+=	"SA4.A4_XFAX POS0146," + CRLF
		
		//-------- Indica se e cliente
		
		cQuerySA1	+=	"'S' POS0161," + CRLF
		
		cQuerySA2	+=	"CASE" + CRLF
		cQuerySA2	+=	"WHEN SA2.A2_CGC NOT IN(SELECT SA1.A1_CGC FROM "+ RetSqlName("SA1") + " SA1) THEN 'N'" + CRLF
		cQuerySA2	+=	"ELSE 'S'" + CRLF
		cQuerySA2	+=	"END POS0161," + CRLF
		
		cQuerySA4	+=	"CASE" + CRLF
		cQuerySA4	+=	"WHEN SA4.A4_CGC NOT IN(SELECT SA1.A1_CGC FROM "+ RetSqlName("SA1") + " SA1) THEN 'N'" + CRLF
		cQuerySA4	+=	"ELSE 'S'" + CRLF
		cQuerySA4	+=	"END POS0161," + CRLF
		
		//-------- Indica pessoa fisica ou juridica
		
		cQuerySA1	+=	"SA1.A1_PESSOA POS0162," + CRLF
		
		cQuerySA2	+=	"CASE SA2.A2_TIPO" + CRLF
		cQuerySA2	+=	"WHEN 'F' THEN 'F'" + CRLF
		cQuerySA2	+=	"ELSE 'J'" + CRLF
		cQuerySA2	+=	"END POS0162," + CRLF
		
		cQuerySA4	+=	"CASE SA4.A4_TPTRANS" + CRLF
		cQuerySA4	+=	"WHEN '3' THEN 'F'" + CRLF
		cQuerySA4	+=	"ELSE 'J'" + CRLF
		cQuerySA4	+=	"END POS0162," + CRLF
		
		//-------- Indica se e fornnecedor
		
		cQuerySA1	+=	"CASE" + CRLF
		cQuerySA1	+=	"WHEN SA1.A1_CGC NOT IN(SELECT SA2.A2_CGC FROM "+ RetSqlName("SA2") + " SA2) THEN 'N'" + CRLF
		cQuerySA1	+=	"ELSE 'S'" + CRLF
		cQuerySA1	+=	"END POS0163," + CRLF
		
		cQuerySA2	+=	"'S' POS0163," + CRLF
		
		cQuerySA4	+=	"CASE" + CRLF
		cQuerySA4	+=	"WHEN SA4.A4_CGC NOT IN(SELECT SA2.A2_CGC FROM "+ RetSqlName("SA2") + " SA2) THEN 'N'" + CRLF
		cQuerySA4	+=	"ELSE 'S'" + CRLF
		cQuerySA4	+=	"END POS0163," + CRLF
		
		//-------- Indica se nacional ou estrangeiro
		
		cQuerySA1	+=	"CASE SA1.A1_EST" + CRLF
		cQuerySA1	+=	"WHEN 'EX' THEN 'E'" + CRLF
		cQuerySA1	+=	"ELSE 'N'" + CRLF
		cQuerySA1	+=	"END POS0164," + CRLF
		
		cQuerySA2	+=	"CASE SA2.A2_EST" + CRLF
		cQuerySA2	+=	"WHEN 'EX' THEN 'E'" + CRLF
		cQuerySA2	+=	"ELSE 'N'" + CRLF
		cQuerySA2	+=	"END POS0164," + CRLF
		
		cQuerySA4	+=	"CASE SA4.A4_EST" + CRLF
		cQuerySA4	+=	"WHEN 'EX' THEN 'E'" + CRLF
		cQuerySA4	+=	"ELSE 'N'" + CRLF
		cQuerySA4	+=	"END POS0164," + CRLF
		
		//-------- INDICA SE E TRNSPORTADORA
		
		cQuerySA1	+=	"CASE" + CRLF
		cQuerySA1	+=	"WHEN SA1.A1_CGC NOT IN(SELECT SA4.A4_CGC FROM "+ RetSqlName("SA4") + " SA4) THEN 'N'" + CRLF
		cQuerySA1	+=	"ELSE 'S'" + CRLF
		cQuerySA1	+=	"END POS0165," + CRLF
		
		cQuerySA2	+=	"CASE" + CRLF
		cQuerySA2	+=	"WHEN SA2.A2_CGC NOT IN(SELECT SA4.A4_CGC FROM "+ RetSqlName("SA4") + " SA4) THEN 'N'" + CRLF
		cQuerySA2	+=	"ELSE 'S'" + CRLF
		cQuerySA2	+=	"END POS0165," + CRLF
		
		cQuerySA4	+=	"'S' POS0165," + CRLF
		
		//----------------------------------------------------------
		
		cQuerySA1	+=	"SA1.A1_INSCR POS0166," + CRLF
		cQuerySA2	+=	"SA2.A2_INSCR POS0166," + CRLF
		cQuerySA4	+=	"SA4.A4_INSEST POS0166," + CRLF
		
		cQuerySA1	+=	"'1' POS0186," + CRLF
		cQuerySA2	+=	"'1' POS0186," + CRLF
		cQuerySA4	+=	"'1' POS0186," + CRLF
		
		cQuerySA1	+=	"SA1.A1_END POS0188," + CRLF
		cQuerySA2	+=	"SA2.A2_END POS0188," + CRLF
		cQuerySA4	+=	"SA4.A4_END POS0188," + CRLF
		
		cQuerySA1	+=	"SA1.A1_NOME POS0288," + CRLF
		cQuerySA2	+=	"SA2.A2_NOME POS0288," + CRLF
		cQuerySA4	+=	"SA4.A4_NOME POS0288," + CRLF
		
		cQuerySA1	+=	"'' POS0353," + CRLF
		cQuerySA2	+=	"'' POS0353," + CRLF
		cQuerySA4	+=	"'' POS0353," + CRLF
		
		cQuerySA1	+=	"SYA.YA_SIGLA POS0358," + CRLF
		cQuerySA2	+=	"SYA.YA_SIGLA POS0358," + CRLF
		cQuerySA4	+=	"SYA.YA_SIGLA POS0358," + CRLF
		
		cQuerySA1	+=	"SA1.A1_TEL POS0360," + CRLF
		cQuerySA2	+=	"SA2.A2_TEL POS0360," + CRLF
		cQuerySA4	+=	"SA4.A4_TEL POS0360," + CRLF
		
		cQuerySA1	+=	"SA1.A1_XTPCONT POS0375," + CRLF
		cQuerySA2	+=	"SA2.A2_XTPCONT POS0375," + CRLF
		cQuerySA4	+=	"SA4.A4_XTPCONT POS0375," + CRLF
		
		//--------- Codigo do Municipio
		
		cQuerySA1	+=	"CASE SA1.A1_EST" + CRLF
		cQuerySA1	+=	"WHEN 'EX' THEN ''" + CRLF
		cQuerySA1	+=	"ELSE SA1.A1_COD_MUN" + CRLF
		cQuerySA1	+=	"END POS0377," + CRLF
		
		cQuerySA2	+=	"CASE SA2.A2_EST" + CRLF
		cQuerySA2	+=	"WHEN 'EX' THEN ''" + CRLF
		cQuerySA2	+=	"ELSE SA2.A2_COD_MUN" + CRLF
		cQuerySA2	+=	"END POS0377," + CRLF
		
		cQuerySA4	+=	"CASE SA4.A4_EST" + CRLF
		cQuerySA4	+=	"WHEN 'EX' THEN ''" + CRLF
		cQuerySA4	+=	"ELSE SA4.A4_COD_MUN" + CRLF
		cQuerySA4	+=	"END POS0377," + CRLF
		
		//---------
		
		cQuerySA1	+=	"SA1.A1_SUFRAMA POS0384," + CRLF
		cQuerySA2	+=	"'' POS0384," + CRLF
		cQuerySA4	+=	"SA4.A4_SUFRAMA POS0384," + CRLF
		
		cQuerySA1	+=	"'00' POS0414," + CRLF
		cQuerySA2	+=	"'00' POS0414," + CRLF
		cQuerySA4	+=	"'00' POS0414," + CRLF
		
		cQuerySA1	+=	"'+0000000000000,00' POS0416," + CRLF
		cQuerySA2	+=	"'+0000000000000,00' POS0416," + CRLF
		cQuerySA4	+=	"'+0000000000000,00' POS0416," + CRLF
		
		cQuerySA1	+=	"'+0000000000000,00' POS0433," + CRLF
		cQuerySA2	+=	"'+0000000000000,00' POS0433," + CRLF
		cQuerySA4	+=	"'+0000000000000,00' POS0433," + CRLF
		
		cQuerySA1	+=	"'' POS0450," + CRLF
		cQuerySA2	+=	"'' POS0450," + CRLF
		cQuerySA4	+=	"'' POS0450," + CRLF
		
		cQuerySA1	+=	"SA1.A1_END POS0462," + CRLF
		cQuerySA2	+=	"SA2.A2_END POS0462," + CRLF
		cQuerySA4	+=	"SA4.A4_END POS0462," + CRLF
		
		cQuerySA1	+=	"SYA.YA_SISEXP POS0467" + CRLF
		cQuerySA2	+=	"SYA.YA_SISEXP POS0467" + CRLF
		cQuerySA4	+=	"SYA.YA_SISEXP POS0467" + CRLF
		
		// ---------- From SA1
		
		cQuerySA1	+=	"FROM "+ RetSqlName("SA1") + " SA1" + CRLF
		
		// ---------- Left Join SA1
		
		cQuerySA1	+=	"LEFT JOIN " + RetSqlName('SYA') + " SYA" + CRLF
		cQuerySA1	+=	"ON SA1.A1_PAIS = SYA.YA_CODGI " + CRLF
		
		// ---------- From SA2
		
		cQuerySA2	+=	"FROM "+ RetSqlName("SA2") + " SA2" + CRLF
		
		// ---------- Left Join SA2
		
		cQuerySA2	+=	"LEFT JOIN " + RetSqlName('SYA') + " SYA" + CRLF
		cQuerySA2	+=	"ON SA2.A2_PAIS = SYA.YA_CODGI " + CRLF
		
		// ---------- From SA4
		
		cQuerySA4	+=	"FROM "+ RetSqlName("SA4") + " SA4" + CRLF
		
		// ---------- Left Join SA4
		
		cQuerySA4	+=	"LEFT JOIN " + RetSqlName('SYA') + " SYA" + CRLF
		cQuerySA4	+=	"ON SA4.A4_XPAIS = SYA.YA_CODGI " + CRLF
		
		// ---------- Where SA1 SA2 SA4
		
		cQuerySA1	+=	"WHERE SA1.A1_XDTINAL = '" + aSyncEnv[9] + "' AND " + CRLF
		cQuerySA2	+=	"WHERE SA2.A2_XDTINAL = '" + aSyncEnv[9] + "' AND " + CRLF
		cQuerySA4	+=	"WHERE SA4.A4_XDTINAL = '" + aSyncEnv[9] + "' AND " + CRLF
		
		cQuerySA1	+=	"SA1.D_E_L_E_T_ <> '*' AND" + CRLF
		cQuerySA2	+=	"SA2.D_E_L_E_T_ <> '*' AND" + CRLF
		cQuerySA4	+=	"SA4.D_E_L_E_T_ <> '*' AND" + CRLF
		
		cQuerySA1	+=	"SA1.A1_MSBLQL <> 'S' AND " + CRLF
		cQuerySA2	+=	"SA2.A2_MSBLQL <> 'S' AND " + CRLF
		cQuerySA4	+=	"SA4.A4_MSBLQL <> 'S' AND " + CRLF
		
		cQuerySA1	+=	"SYA.D_E_L_E_T_ <> '*'     " + CRLF
		cQuerySA2	+=	"SYA.D_E_L_E_T_ <> '*' AND " + CRLF
		cQuerySA4	+=	"SYA.D_E_L_E_T_ <> '*' AND " + CRLF
		
		cQuerySA2	+=	"SA2.A2_CGC NOT IN(SELECT SA1.A1_CGC FROM "+ RetSqlName("SA1") + " SA1 WHERE SA1.D_E_L_E_T_ <> '*' AND SA1.A1_CGC <> '' AND SA1.A1_MSBLQL <> 'S')" + CRLF
		cQuerySA4	+=	"SA4.A4_CGC NOT IN(SELECT SA1.A1_CGC FROM "+ RetSqlName("SA1") + " SA1 WHERE SA1.D_E_L_E_T_ <> '*' AND SA1.A1_CGC <> '' AND SA1.A1_MSBLQL <> 'S') AND" + CRLF
		
		cQuerySA4	+=	"SA4.A4_CGC NOT IN(SELECT SA2.A2_CGC FROM "+ RetSqlName("SA2") + " SA2 WHERE SA2.D_E_L_E_T_ <> '*' AND SA2.A2_CGC <> '' AND SA2.A2_MSBLQL <> 'S')" + CRLF
		
		// ---------- Union All
		
		cQuery	+=	cQuerySA1
		cQuery	+=	"UNION ALL" + CRLF
		cQuery	+=	cQuerySA2
		cQuery	+=	"UNION ALL" + CRLF
		cQuery	+=	cQuerySA4
		
		// --------------------------------------------------------------
		
		cQueryBkp	:=	cQuery
		
		cQuery := ChangeQuery(cQuery)
		
		If TcSqlExec(cQuery) < 0
			
			U_SYNCMAIL(AllTrim(aSyncEnv[15]),cLayout + ' - ' + AllTrim(aSyncEnv[17]),'Erro na execucao da query no banco de dados: ' + Chr(13) + Chr(10) + AllTrim(TcSqlError()),AllTrim(SubStr(aSyncEnv[4],1,6)),AllTrim(SubStr(aSyncEnv[4],7,6)),1,aSyncEnv[8],aSyncEnv[9])
			
		Else
			
			DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),cTrab,.F.,.T.)
			
			U_SYNCLOG(;
				'Agenda : ' +  SubStr(aSyncEnv[4],1,6) + CRLF +;
				'Tarefa : ' +  SubStr(aSyncEnv[4],7,6) + CRLF +;
				cLayout + ' - ' + AllTrim(aSyncEnv[17]) + CRLF +;
				'Query executada com sucesso: ' + CRLF + cQueryBkp)
			
			// Cria arquivo temporario
			
			fErase(Separa(cTempFile,'\',.T.)[3])
			DbCreate(cTempFile,aStru,__LocalDriver)
			DbUseArea(.T.,__LocalDriver,cTempFile,cTempTrab,.T.,.F.)
			
			U_SYNCLOG(;
				'Agenda : ' +  SubStr(aSyncEnv[4],1,6) + CRLF +;
				'Tarefa : ' +  SubStr(aSyncEnv[4],7,6) + CRLF +;
				'Arquivo Temporario criado com sucesso : ' + cTempFile)
			
			// --------------------------------------------------------------
			// Preenchimento do arquivo temporario
			// --------------------------------------------------------------
			
			(cTrab)->(DbGotop())
			
			Do While .Not. (cTrab)->(EOF())
				
				For nX := 1 To Len(aFiliais)
					
					If FilialUsa(aFiliais[nX],(cTrab)->POS0072)
						
						RecLock(cTempTrab,.T.)
						
						(cTempTrab)->POS0001 := (cTrab)->POS0001
						(cTempTrab)->POS0009 := U_SYNCFIL(aSyncEnv[7],5,aFiliais[nX])
						(cTempTrab)->POS0012 := (cTrab)->POS0012
						(cTempTrab)->POS0047 := StrTran(StrTran(StrTran(StrTran((cTrab)->POS0047,'.',''),'-',''),'/',''),'\','')
						(cTempTrab)->POS0062 := SubStr((cTrab)->POS0062,1,5) + '-' + SubStr((cTrab)->POS0062,6,3)
						(cTempTrab)->POS0072 := (cTrab)->POS0072
						(cTempTrab)->POS0087 := (cTrab)->POS0087
						(cTempTrab)->POS0088 := (cTrab)->POS0088
						(cTempTrab)->POS0096 := (cTrab)->POS0096
						(cTempTrab)->POS0146 := '(' + (cTrab)->DDD + ')' + (cTrab)->POS0146
						(cTempTrab)->POS0161 := (cTrab)->POS0161
						(cTempTrab)->POS0162 := (cTrab)->POS0162
						(cTempTrab)->POS0163 := (cTrab)->POS0163
						(cTempTrab)->POS0164 := (cTrab)->POS0164
						(cTempTrab)->POS0165 := (cTrab)->POS0165
						(cTempTrab)->POS0166 := StrTran(StrTran(StrTran(StrTran((cTrab)->POS0166,'.',''),'-',''),'/',''),'\','')
						(cTempTrab)->POS0186 := (cTrab)->POS0186
						(cTempTrab)->POS0188 := (cTrab)->POS0188
						(cTempTrab)->POS0288 := (cTrab)->POS0288
						(cTempTrab)->POS0353 := (cTrab)->POS0353
						(cTempTrab)->POS0358 := (cTrab)->POS0358
						(cTempTrab)->POS0360 := '(' + (cTrab)->DDD + ')' + (cTrab)->POS0360
						(cTempTrab)->POS0375 := (cTrab)->POS0375
						
						IF aScan(aUF,{|x| x[1] == (cTrab)->UF}) == 0
							
							(cTempTrab)->POS0377 := aUF[aScan(aUF,{|x| x[1] == "  "})][02] + (cTrab)->POS0377
							
						Else
							
							(cTempTrab)->POS0377 := aUF[aScan(aUF,{|x| x[1] == (cTrab)->UF})][02] + (cTrab)->POS0377
							
						End IF
						
						(cTempTrab)->POS0384 := StrTran(StrTran(StrTran(StrTran((cTrab)->POS0384,'.',''),'-',''),'/',''),'\','')
						(cTempTrab)->POS0414 := (cTrab)->POS0414
						(cTempTrab)->POS0416 := (cTrab)->POS0416
						(cTempTrab)->POS0433 := (cTrab)->POS0433
						(cTempTrab)->POS0450 := (cTrab)->POS0450
						(cTempTrab)->POS0462 := AllTrim(SubStr((cTrab)->POS0462,At(',',(cTrab)->POS0462) + 1,Len((cTrab)->POS0462)))
						(cTempTrab)->POS0467 := '0' + (cTrab)->POS0467
						
						MsUnLock()
						
						nCount++
						
					End If
					
				Next nX
				
				(cTrab)->(DbSkip())
				
			End Do
			
			// --------------------------------------------------------------
			
			U_SYNCDAT(cTempTrab,aSyncEnv,nCount)
			
			(cTrab)->(DbCloseArea())
			(cTempTrab)->(DbCloseArea())
			fErase(Separa(cTempFile,'\',.T.)[3])
			
		End IF
		
	Else
		
		U_SYNCLOG(;
			'Agenda : ' +  SubStr(aSyncEnv[4],1,6) + CRLF +;
			'Tarefa : ' +  SubStr(aSyncEnv[4],7,6) + CRLF +;
			'Nao foi possivel montar o ambiente de geracao do layout ' + cLayout)
		
	End IF
	
	RpcClearEnv()
	
Return
/*/{Protheus.doc} FILIALUSA
E a Static Function que verifica se a pessoa e utilizada em alguma nota fiscal.
@author Elton Teodoro Alves
@since 14/11/2014
@version P11 R5
@Param cFil,Caractere,Codigo da Filial de Pesquisa
@Param cCnpj,Caractere,CNPJ da Pessoa a ser pesquisada
/*/
Static Function FilialUsa(cFil,cCnpj)
	
	Local	aArea		:=	GetArea()
	Local	lRet		:=	.F.
	Local	aSA1		:=	{}
	Local	aSA2		:=	{}
	Local	aSA4		:=	{}
	Local	cQuery		:=	''
	Local	cWhereSF1	:=	''
	Local	cWhereSF2	:=	''
	Local	cTrab		:=	GetNextAlias()
	Local	aSf			:=	{'F1','F2'}
	Local	nCount		:=	0
	Local	nX			:=	0
	
	If .Not. Empty(cCnpj)
		
		// Pega Codigo de cadastro em Clientes/Fornecedores/Transportadoras
		
		// Cliente
		DbSelectArea('SA1')
		DbSetOrder(3)
		
		If DbSeek(xFilial('SA1') + cCnpj)
			
			aAdd(aSA1,SA1->A1_COD)
			aAdd(aSA1,SA1->A1_LOJA)
			
		Else
			
			aAdd(aSA1,Space(GetSx3Cache('A1_COD','X3_TAMANHO')))
			aAdd(aSA1,Space(GetSx3Cache('A1_LOJA','X3_TAMANHO')))
			
		End If
		
		// Fornecedor
		DbSelectArea('SA2')
		DbSetOrder(3)
		
		If DbSeek(xFilial('SA2') + cCnpj)
			
			aAdd(aSA2,SA2->A2_COD)
			aAdd(aSA2,SA2->A2_LOJA)
			
		Else
			
			aAdd(aSA2,Space(GetSx3Cache('A2_COD','X3_TAMANHO')))
			aAdd(aSA2,Space(GetSx3Cache('A2_LOJA','X3_TAMANHO')))
			
		End If
		
		// Transportadora
		DbSelectArea('SA4')
		DbSetOrder(3)
		
		If DbSeek(xFilial('SA4') + cCnpj)
			
			aAdd(aSA4,SA4->A4_COD)
			
		Else
			
			aAdd(aSA4,Space(GetSx3Cache('A4_COD','X3_TAMANHO')))
			
		End If
		
		//Montagem da Where a ser aplicada na Query das tabelas SF1 - Entradas e SF2 - Saidas
		//-----------------------------------------------------------------------------------
		
		//Where para verificar se o cliente e utilizado em notas de entrada e em notas de saida
		
		If .Not. Empty(aSA1[1]) .And. .Not. Empty(aSA1[1])
			
			cWhereSF1 += "(SF1.F1_FILIAL = '" + cFil + "' AND SF1.F1_FORNECE = '" + aSA1[1] + "' AND SF1.F1_LOJA = '" + aSA1[2] + "' AND SF1.F1_TIPO IN('D','B'))"  + CRLF
			cWhereSF2 += "(SF2.F2_FILIAL = '" + cFil + "' AND SF2.F2_CLIENTE = '" + aSA1[1] + "' AND SF2.F2_LOJA = '" + aSA1[2] + "' AND SF2.F2_TIPO IN('N','C','I','P'))"  + CRLF
			
		End If
		
		//Where para verificar se o fornecedor e utilizado em notas de entrada e em notas de saida
		
		If .Not. Empty(aSA2[1]) .And. .Not. Empty(aSA2[1])
			
			If .Not. Empty(cWhereSF1)
				
				cWhereSF1 += " OR "
				
			End If
			
			If .Not. Empty(cWhereSF2)
				
				cWhereSF2 += " OR "
				
			End If
			
			cWhereSF1 += "(SF1.F1_FILIAL = '" + cFil + "' AND SF1.F1_FORNECE = '" + aSA2[1] + "' AND SF1.F1_LOJA = '" + aSA2[2] + "' AND SF1.F1_TIPO IN('N','C','I','P'))" + CRLF
			cWhereSF2 += "(SF2.F2_FILIAL = '" + cFil + "' AND SF2.F2_CLIENTE = '" + aSA2[1] + "' AND SF2.F2_LOJA = '" + aSA2[2] + "' AND SF2.F2_TIPO IN('D''B'))" + CRLF
			
		End If
		
		//Where para verificar se a transportadora e utilizada em notas de entrada e em notas de saida
		
		If .Not. Empty(aSA4[1])
			
			If .Not. Empty(cWhereSF1)
				
				cWhereSF1 += " OR "
				
			End If
			
			If .Not. Empty(cWhereSF2)
				
				cWhereSF2 += " OR "
				
			End If
			
			cWhereSF1 += "(SF1.F1_TRANSP = '" + aSA4[1] + "')" + CRLF
			cWhereSF2 += "(SF2.F2_TRANSP = '" + aSA4[1] + "')" + CRLF
			
		End If
		
		// Verifica se o cadastro foi localizado em Fornecedores\Clientes\Transportadoras
		
		If (;
				(.Not. Empty(aSA1[1]) .And. .Not. Empty(aSA1[1])) .Or.;
				(.Not. Empty(aSA2[1]) .And. .Not. Empty(aSA2[1])) .Or.;
				(.Not. Empty(aSA4[1])))
			
			//Pesqueisa na SF1 e/ou SF2 o cadastro da pessoa
			
			For nX := 1  To Len(aSf)
				
				If .Not. lRet // Verifica se ja foi feita verificacao e retornou .T. para nao executar novamente na SF2
					
					cQuery	:=	"SELECT COUNT(*) COUNT FROM " + RetSqlName("S" + aSf[nX]) + " S" + aSf[nX] + " " + CRLF
					cQuery	+=	"WHERE " + Eval(&("{|| cWhereS" + aSf[nX] + "}")) + CRLF
					
					cQuery := ChangeQuery(cQuery)
					
					If TcSqlExec(cQuery) >= 0
						
						DbUseArea(.T.,"TOPCONN",TCGenQry(,,cQuery),cTrab,.F.,.T.)
						
						// Indica se foi usado ou nao
						lRet := (cTrab)->COUNT > 0
						
						(cTrab)->(DbCloseArea())
						
					End If
					
				End If
				
			Next nX
			
		End If
		
		
	End If
	
	RestArea(aArea)
	
Return lRet
